package persistencia;

import modelo.BibliotecaDeCiudades;

import java.util.Arrays;
import java.util.Collection;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.NodeList;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class ParserDeCiudades extends Parser {

	private BibliotecaDeCiudades biblio;
	
	public ParserDeCiudades(BibliotecaDeCiudades biblio){
		this.biblio = biblio;
	}
	
	public void parsear(String nombre_archivo){
		try {
		DocumentBuilderFactory db = DocumentBuilderFactory.newInstance();
		DocumentBuilder DB = db.newDocumentBuilder();
		Document doc = DB.parse(nombre_archivo);
		NodeList ciudades = doc.getElementsByTagName("ciudad");
		int largo = ciudades.getLength();
		int indice = 0;
		while(indice<largo) {
			Element ciudad = (Element) ciudades.item(indice);
			
			Collection<String> lista_geo = null;
			Collection<String> lista_ref = null;
			Collection<String> lista_ind = null;
			Collection<String> lista_ani = null;
			Collection<String> lista_gen = null;
			Collection<String> lista_idio = null;
			Collection<String> lista_art = null;
			Collection<String> lista_rel = null;
			Collection<String> lista_misc = null;
			
			String nombre_ciudad = ciudad.getAttribute("nombreCiudad");
			if (nombre_ciudad.equals("")) return; 
           	String colores_bandera = ciudad.getAttribute("coloresBandera");
           	if (colores_bandera.equals("")) colores_bandera = null;
           	String moneda = ciudad.getAttribute("moneda");
           	if (moneda.equals("")) moneda = null;
           	String geografia = ciudad.getAttribute("geografia");
           	if (!geografia.equals("")) lista_geo = (Collection<String>) Arrays.asList(geografia.split(","));
           	String lugares_de_referencia = ciudad.getAttribute("lugaresDeReferencia");
        	if (!lugares_de_referencia.equals("")) lista_ref = (Collection<String>) Arrays.asList(lugares_de_referencia.split(","));
           	String industria = ciudad.getAttribute("industria");
           	if (!industria.equals("")) lista_ind = (Collection<String>) Arrays.asList(industria.split(","));
           	String animales = ciudad.getAttribute("animales");
           	if (!animales.equals("")) lista_ani = (Collection<String>) Arrays.asList(animales.split(","));
           	String gente = ciudad.getAttribute("gente");
           	if (!gente.equals("")) lista_gen = (Collection<String>) Arrays.asList(gente.split(","));
           	String idioma = ciudad.getAttribute("idiomas");
           	if (!idioma.equals("")) lista_idio = (Collection<String>) Arrays.asList(idioma.split(","));
           	String arte = ciudad.getAttribute("arte");
           	if (!arte.equals("")) lista_art = (Collection<String>) Arrays.asList(arte.split(","));
           	String religion = ciudad.getAttribute("religion");
           	if (!religion.equals("")) lista_rel = (Collection<String>) Arrays.asList(religion.split(","));
           	String gobierno = ciudad.getAttribute("gobierno");
           	if (gobierno.equals("")) gobierno = null;
           	String miscelaneo = ciudad.getAttribute("miscelaneo");
           	if (!miscelaneo.equals("")) lista_misc = (Collection<String>) Arrays.asList(miscelaneo.split(","));
           	String edificio1 = ciudad.getAttribute("edificio1");
           	String edificio2 = ciudad.getAttribute("edificio2");
           	String edificio3 = ciudad.getAttribute("edificio3");
           	String latitud = ciudad.getAttribute("latitud");
           	String longitud = ciudad.getAttribute("longitud");
           	String descripcion = ciudad.getAttribute("descripcion");
           	String objeto_robado = ciudad.getAttribute("objetoRobado");

           	this.biblio.agregarCiudad(nombre_ciudad, Double.parseDouble(latitud), Double.parseDouble(longitud), descripcion, colores_bandera, moneda, lista_geo, lista_ref, lista_ind, lista_ani, lista_gen, lista_idio, lista_art, lista_rel, gobierno, lista_misc, edificio1, edificio2, edificio3);
           	indice++;
			}
		}
		catch(Exception ex) 
		{
		   return ;
		}
	}


	
	
}
